C++ STL : Custom sorting one vector based on contents of another
全部标签探索C++STL以获得终极性能博主简介一、引言二、C++STL简介2.1、STL是什么?2.2、STL中的常用组件2.3、STL的优点三、入门指南:了解基本概念和用法3.1、容器:vector、list、deque、set、map等3.2、算法:查找、排序、遍历等3.3、迭代器:使用不同类型的迭代器进行数据访问3.4、函数对象:自定义比较器、操作符重载四、提升性能的技巧4.1、选择正确的容器:根据需求选择最优容器4.2、STL内部实现细节4.3、使用算法的最佳建议4.4、迭代器的选择:迭代器性能差异和适用场景五、深入探索C++STL5.1、高级容器5.2、自定义容器适配器5.3、高级算法:复杂
文章目录默认成员函数构造函数拷贝构造函数赋值运算符重载函数析构函数beginendsizecapacityreserveeraseresizepush_backappendoperator+=insertswapsubstrc_stroperator[]findcleargetline>>运算符的重载默认成员函数构造函数构造函数设置为缺省参数,若不传入参数,则默认构造为空字符串。字符串的初始大小和容量均设置为传入C字符串的长度(不包括’\0’) //默认构造函数-全缺省 string(constchar*str="")//常量字符串以\0为结束标志 { _size=strlen(st
文章篇幅较长,越7万余字,建议电脑端访问文章目录一、前言1、C语言中的字符串2、string类的使用场景二、初步认识string类1、概述2、常用接口细述1)string类对象的默认成员函数2)string类对象的常见容量操作①size、length、capacity②maxsize③clear④empty⑤reserve⑥resize⑦shrink_to_fit3)string类对象的访问及遍历操作①operator[]②at③迭代器④范围for⑤front和back4)string类对象的修改操作①push_back②append③operator+=(string)④insert⑤ass
前言时不可以苟遇,道不可以虚行。STL中最常用的容器为:vector,暂且把它理解为我们之前学过的数组Array。一、创建一个vector容器(数组)添加头文件:#include vectorint>v;二、向容器中插入数据利用内置函数:push_back() v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);三、通过迭代器访问容器中的数据1、利用起始和结束两个迭代器先声明两个迭代器,一个指向容器中的第一元素,一个指向容器中的最后一个元素的下一个位置然后利用一层while循环,依次遍历容器中的元素。 vectorin
文章目录前言一、priority_queue的底层实现二、使用仿函数控制priority_queue的底层总结前言本文章讲解C++STL的容器适配器:priority_queue的实现,并实现仿函数控制priority_queue底层。一、priority_queue的底层实现priority_queue叫做优先级队列,它的底层结构是堆,在库中,默认生成的是大堆在库的实现中,使用vector作为该优先级队列的适配容器。由于priority_queue也是一个适配器,所以它的接口函数也可以对其他容器的函数进行封装使用。下面来对priority_queue进行模拟实现。#pragmaonce//优
个人主页:🍝在肯德基吃麻辣烫分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处。文章目录前言一、什么是容器适配器?二、stack的基本函数和模拟实现三、queue的基本函数和模拟实现四、deque4.1deque的底层结构4.2使用deque适配stack和queue的原因总结前言本文章主要介绍容器适配器的功能,以及一个适配的场景。一、什么是容器适配器?容器适配器,按字面意思理解的话,就是用来对一个容器进行匹配的。在C++STL中,容器有:vector,list,deque,map,set等。而在C++STL中不把stack和queue纳入容器的范围而是纳入容器适配器的范围是因为:stack
目录前沿一、vector的使用 1、vector构造函数的声明 2、vector迭代器的使用 3、vector空间增长问题 4、vector的增删查改二、vector的模拟实现 1、vector的成员变量 2、迭代器 3、容量相关(resize,reserve) 4、数据访问相关 5、插入删除 5.1任意位置插入 5.2任意位置删除 5.3尾插 5.4尾删 6、析构函数 7、交换函数 8、构造函数 8.1无参构造 8.2实参构造 8.3迭代器区间构造 8.4实参构造的特例化 8.5拷贝构造 9、赋值运算符重载三、vector迭代器失效问题(重点) 1、会引起其底层空间改变的操作,都有可能是迭代
模板和STL简介1.泛型编程2.函数模板2.1函数模板概念2.1函数模板格式2.3函数模板的原理2.4函数模板的实例化2.5模板参数的匹配原则3.类模板3.1类模板的定义格式3.2类模板的实例化4.什么是STL5.STL的版本6.STL的六大组件7.STL的重要性8.如何更好地学习STL9.STL的缺陷结语1.泛型编程泛型编程是一种编程范式,旨在实现可重用、通用和高度抽象的代码。它允许程序员编写与数据类型无关的代码,以便在不同的数据类型上进行操作,而无需为每种数据类型重复编写代码。在传统的编程中,通常需要为每种数据类型编写特定的代码。例如,如果要实现一个排序算法,可能需要为整数、浮点数和字符串
目录1.读源码2.框架搭建 3.list的迭代器4.list的拷贝构造与赋值重载拷贝构造赋值重载5.list的常见重要接口实现operator--() insert接口erase接口push_back接口push_front 接口pop_back接口pop_front接口size接口clear接口别忘了析构函数源码分享写在最后:1.读源码读源码千万不能一行一行读啊,不然你就看晕在那里了,我们先从核心框架开始抓取,比如说先找到list在哪: 然后老规矩,我们先找他的成员变量:那我们就来找找这个link_type是什么:link_type是list_node*,list_node是一个类类型,那我
放在专栏【C++知识总结】,会持续更新,期待支持1、list数据结构list是一个带有头节点的双向链表,list主要是由以下部分组成:list节点类、迭代器类、list本身1.1、list节点类关于list节点类,由于list本身是一个双向的链表,所以节点内必须包含指向前一个节点的指针、指向后一个节点的指针、用来存储数据的data。同时我们只需给该类一个构造即可,因为对于节点的析构,我们交给list本身这个类来实现即可。如下所示,为list的节点设计:1.2、迭代器类list不能像vector那样以一个原生指针作为迭代器,这是因为list中各个节点并不是连续的,但是list中的迭代器必须要能